package com.demo.sort;

/**
 * @Description: 选择排序
 * @Author: xiangty
 * @Date: 2018-08-02
 */
public class SelectSort {

    public static void main(String[] args) {
        //将数组按从小到大排序输出：“1	6	8	12	25	36	48	53	54	56	61	92”
        int[] array = {92, 54, 61, 25, 48, 36, 1, 8, 6, 12, 53, 56};

        /*
            排序的方法：92,54,61,25,48,36,1,8,6,12,53,56
            首先拿第一个元素92一次和后面的元素比较，如果92大就和与之相比较且小于它的元素交换位置，
            然后开始第下一个元素的循环，依次执行到最后一个元素，最后打印数组
         */
        selectSort(array);

        for (int i : array) {
            System.out.print(i + "\t");
        }
    }

    /**
     * 选择排序
     *
     * @param param 需要排序的数组
     */
    public static void selectSort(int[] param) {
        for (int i = 0; i < param.length; i++) {
            for (int m = i + 1; m < param.length; m++) {
                if (param[i] > param[m]) {
                    /*
                    方法一：
                    a = a + b;// a=30=10+20
                    b = a - b;// b=10=30-20
                    a = a - b;// a=20=30-10
                    方法二： 声明一个临时变量用于操作
                    */
                    param[i] = param[i] + param[m];
                    param[m] = param[i] - param[m];
                    param[i] = param[i] - param[m];
                }
            }
        }
    }

}
